home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / lib / udev / raid-devfs.sh
Linux/UNIX/POSIX Shell Script  |  2006-05-02  |  1KB  |  51 lines

  1. #!/bin/sh -e
  2. #
  3. # Copyright (c) 2004 Marco d'Itri <md@linux.it>
  4. # Copyright (c) 2004 Piotr Roszatycki <dexter@debian.org>
  5. #
  6. # Usage:
  7. # KERNEL=="cciss!*", PROGRAM="/etc/udev/scripts/raid-devfs.sh %k", NAME="%c{1}", SYMLINK+="%k"
  8. # KERNEL=="ida!*",   PROGRAM="/etc/udev/scripts/raid-devfs.sh %k", NAME="%c{1}", SYMLINK+="%k"
  9. # KERNEL=="rd!*",    PROGRAM="/etc/udev/scripts/raid-devfs.sh %k", NAME="%c{1}", SYMLINK+="%k"
  10.  
  11. get_dev_number_cciss() {
  12.   grep '^cciss/' /proc/driver/cciss/* | cat -n | \
  13.     sed -n "/cciss\/$1:/s/cciss.*//p"
  14. }
  15.  
  16. get_dev_number_ida() {
  17.   grep '^ida/' /proc/driver/cpqarray/* | cat -n | \
  18.     sed -n "/ida\/$1:/s/ida.*//p"
  19. }
  20.  
  21. get_dev_number_rd() {
  22.   grep '^ */dev/rd/' /proc/rd/*/initial_status | cat -n | \
  23.     sed -n "/rd\/$1:/s/\/dev\/rd.*//p"
  24. }
  25.  
  26. get_dev_number() {
  27.     dev=$1
  28.     num=$(eval $(echo get_dev_number_$TYPE $dev))
  29.     [ "$num" ] || exit 1
  30.     echo $(($num - 1))
  31. }
  32.  
  33. TYPE=${1%%/*}
  34. NAME=${1#*/}
  35.  
  36. # abort if there was no match
  37. [ "$TYPE" != "$1" ] || exit 1
  38.  
  39. case "$NAME" in
  40.     *p*)
  41.     LONG_NAME=disc$(get_dev_number ${NAME%%p*})/part${NAME##*p}
  42.     ;;
  43.     *)
  44.     LONG_NAME=disc$(get_dev_number $NAME)/disc
  45.     ;;
  46. esac
  47.  
  48. echo "$TYPE/$LONG_NAME"
  49. exit 0
  50.  
  51.